import request from '@/utils/request'

// 发布图书
export function publishBook(data) {
  return request({
    url: '/api/book',
    method: 'post',
    data,
  })
}

// 获取图书详情
export function getBookDetail(id) {
  return request({
    url: `/api/book/${id}`,
    method: 'get',
  })
}

// 获取图书列表
export function getBookList(params) {
  return request({
    url: '/api/book/list',
    method: 'get',
    params,
  })
}

// 更新图书信息
export function updateBook(id, data) {
  return request({
    url: `/api/book/${id}`,
    method: 'put',
    data,
  })
}

// 删除图书
export function deleteBook(id) {
  return request({
    url: `/api/book/${id}`,
    method: 'delete',
  })
}

// 借阅图书
export async function borrowBook(id) {
  try {
    const response = await request({
      url: `/api/book/${id}/borrow`,
      method: 'post',
    });
    return response;
  } catch (error) {
    // 处理后端返回的400错误
    if (error.response) {
      const errorMessage = error.response.data.message || '借阅失败';
      uni.showToast({
        title: errorMessage,
        icon: 'none',
        duration: 2000
      });
    } else {
      uni.showToast({
        title: '网络请求失败',
        icon: 'none',
        duration: 2000
      });
    }
    throw error; // 保持错误传递以便上层处理
  }
}

// 预约图书（修改后）
export async function reserveBook(id) {
  try {
    const response = await request({
      url: `/api/book/${id}/reserve`,
      method: 'post',
    });
    return response;
  } catch (error) {
    // 处理后端返回的400错误（如预约自己的图书）
    if (error.response) {
      const errorMessage = error.response.data.message || '预约失败';
      uni.showToast({
        title: errorMessage,
        icon: 'none',
        duration: 2000
      });
    } else {
      uni.showToast({
        title: '网络请求失败',
        icon: 'none',
        duration: 2000
      });
    }
    throw error; // 保持错误传递以便上层处理
  }
}

// 归还图书
export function returnBook(id) {
  return request({
    url: `/api/book/${id}/return`,
    method: 'post',
  })
}

// 获取我的发布列表
export function getMyPublishedBooks() {
  return request({
    url: '/api/book/my-published',
    method: 'get',
  })
}

// 获取我的借阅列表
export function getMyBorrowedBooks() {
  return request({
    url: '/api/book/my-borrowed',
    method: 'get',
  })
}

// 评论图书
export function commentBook(id, data) {
  return request({
    url: `/api/book/${id}/comment`,
    method: 'post',
    data,
  })
}

// 获取图书评论列表
export function getBookComments(id, params) {
  return request({
    url: `/api/book/${id}/comments`,
    method: 'get',
    params,
  })
}

// 模糊搜索图书（标题/作者）
export function searchBooks(params) {
  return request({
    url: '/api/book/search',
    method: 'get',
    params,
  })
}

// 添加收藏（需登录）
export function addFavoriteBook(bookId) {
  return request({
    url: `/api/book/${bookId}/favorite`,
    method: 'post',
  })
}

// 取消收藏（需登录）
export function removeFavoriteBook(bookId) {
  return request({
    url: `/api/book/${bookId}/favorite`,
    method: 'delete',
  })
}

// 查询图书是否已被收藏（需登录）
export function checkBookIsFavorite(bookId) {
  return request({
    url: `/api/book/${bookId}/is-favorite`,
    method: 'get',
  })
}
